package com.groupbuying.store.service;

import com.groupbuying.store.domain.StoreCapitalVirtualAccountDetailDO;
import com.groupbuying.store.utils.PageUtils;
import com.groupbuying.store.utils.R;
import com.groupbuying.store.utils.apiresult.ApiResult;
import io.swagger.annotations.Api;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 商户虚拟资金账号流水明细
 * 
 * @author wenguoqiang
 * @email 17081@mengtaigroup.com
 * @date 2019-01-31 10:58:32
 */
public interface StoreCapitalVirtualAccountDetailService {

	StoreCapitalVirtualAccountDetailDO get(String uuid);

	List<StoreCapitalVirtualAccountDetailDO> list(Map<String, Object> map);

	int count(Map<String, Object> map);

	int save(StoreCapitalVirtualAccountDetailDO storeCapitalVirtualAccountDetail);

	int update(StoreCapitalVirtualAccountDetailDO storeCapitalVirtualAccountDetail);

	int remove(String uuid);

	int batchRemove(String[] uuids);

	/**
	 * 生成明细
	 * @param storeUuid
	 * @param storeNo
	 * @param businessType
	 * @param inOrOut
	 * @param operAmount
	 * @param balance
	 * @param freezeBalance
	 * @param billNo
	 * @param description
	 * @param oper
	 * @param cashAmount
	 * @param balanceAmount
	 * @param integralAmount
	 * @param operCashAmount
	 * @param operBalanceAmount
	 * @param operIntegralAmount
	 */
    void createStoreAccountLog(String storeUuid,String storeNo,String businessType,String inOrOut, BigDecimal operAmount,BigDecimal balance,BigDecimal freezeBalance , String billNo,String description, String oper,BigDecimal cashAmount,BigDecimal balanceAmount,BigDecimal integralAmount, BigDecimal operCashAmount,BigDecimal operBalanceAmount ,BigDecimal operIntegralAmount);

	/**
	 * 生成明细
	 * @param storeUuid
	 * @param storeNo
	 * @param businessType
	 * @param inOrOut
	 * @param operAmount
	 * @param balance
	 * @param freezeBalance
	 * @param billNo
	 * @param description
	 * @param oper
	 * @param timeStamp
	 * @param cashAmount
	 * @param balanceAmount
	 * @param integralAmount
	 * @param operCashAmount
	 * @param operBalanceAmount
	 * @param operIntegralAmount
	 */
	void createStoreAccountLog(String storeUuid,String storeNo,String businessType,String inOrOut, BigDecimal operAmount,BigDecimal balance,BigDecimal freezeBalance , String billNo,String description,String oper, String timeStamp,BigDecimal cashAmount,BigDecimal balanceAmount,BigDecimal integralAmount,BigDecimal operCashAmount,BigDecimal operBalanceAmount ,BigDecimal operIntegralAmount);

	/**
	 * 查询流水页面数据
	 * @param params
	 * @return
	 */
	R getListByPage(Map<String, Object> params);

	/**
	 * 查询资金密码
	 * @param params
	 * @return
	 */
	PageUtils getFinancialPwdList(Map<String, Object> params);

	/**
	 * 根据时间段获取流水记录
	 * @param startTime
	 * @param endTime
	 * @param storeUuid
	 * @return
	 */
    List<StoreCapitalVirtualAccountDetailDO> queryListByTime(String startTime, String endTime,String storeUuid);

    /**
     * 商户修改资金密码
     * @Author cuich
     * @Date 2019/9/17 20:31
     **/
    ApiResult changePwd(Map<String,Object> params);
}
